﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ch07
{
    //测试管理类
    class TestManager
    {
        //定义学生管理员对象的字段
        StudentManager manager = new StudentManager();

        //定义字段用于判断是否退出循环，默认true不退出循环
        bool flag = true;

        //定义启动菜单的方法
        public void Start()
        {
            do
            {
                //清理屏幕
                Console.Clear();

                //调用ShowMenu方法显示菜单
                ShowMenu();

                //按任意键继续
                Console.Write("\n按任意键继续...");
                Console.ReadKey();

            } while (flag);
        }
        //定义显示菜单的方法
        void ShowMenu()
        {
            Console.WriteLine("*************************");
            Console.WriteLine("     1、添加学员");
            Console.WriteLine("     2、修改学员");
            Console.WriteLine("     3、删除学员");
            Console.WriteLine("     4、查询学员");
            Console.WriteLine("     5、学员信息列表");
            Console.WriteLine("     6、退出");
            Console.WriteLine("*************************");
            Console.Write("请选择要进行的操作：");
            int n = int.Parse(Console.ReadLine());
            Console.WriteLine();
            //对用户的选择进行判断
            switch (n)
            {
                case 1: add(); break;       //调用add方法添加学员
                case 2: update(); break;    //调用update方法修改学员
                case 3: delete(); break;    //调用delete方法删除学员
                case 4: query(); break;     //调用query方法查询学员
                case 5: stuList(); break;   //调用stuList方法显示学员信息列表
                case 6: Console.WriteLine("欢迎下次光临！"); flag = false; break;  //退出
                default: Console.WriteLine("输入有误！只能输入1-6！请重新输入！"); break;
            }
        }
        //定义添加学员的方法
        void add()
        {
            //接收用户输入学生信息
            Console.Write("学号：");
           int stuNo = int.Parse(Console.ReadLine());
            Console.Write("姓名：");
            string stuName = Console.ReadLine();
            Console.Write("年龄：");
            int stuAge = int.Parse(Console.ReadLine());
            Console.Write("性别：");
            char stuSex = char.Parse(Console.ReadLine());
            //将用户输入的学生信息封装在一个学生对象里
            Student stu = new Student(stuNo, stuName, stuAge, stuSex);
            //使用manager学生管理员的Add方法完成添加学生信息的工作
            manager.Add(stu);
        }
        //定义修改学员的方法
        void update()
        {
            Console.Write("请输入要修改的学号：");
            int id = int.Parse(Console.ReadLine());
            //根据学号查询学员信息
            Student stu = manager.GetStuById(id);
            //如果查询返回的是空，则代表查无此人
            if (stu == null)
            {
                Console.WriteLine("查无此人！请重新输入！");
            }
            else  //不为null，则进行进行修改
            {
                Console.WriteLine("\n你要修改的学生信息如下：");
                Console.WriteLine(stu);

                Console.Write("\n请选择要修改的项(1、姓名；2、年龄；3、性别)：");
                int field = int.Parse(Console.ReadLine());
                Console.Write("请输入要修改的值：");
                string value = Console.ReadLine();
                //根据用户输入的字段和值进行修改
                switch (field)
                {
                    case 1: stu.StuName = value; break;
                    case 2: stu.StuAge = int.Parse(value); break;
                    case 3: stu.StuSex = char.Parse(value); break;
                }
                Console.WriteLine("修改成功！");
            }
        }
        //定义删除学员的方法
        void delete()
        {
            Console.Write("请输入要删除的学号：");
            int id = int.Parse(Console.ReadLine());
            //根据学号查询学员信息
            Student stu = manager.GetStuById(id);
            //如果查询返回的是空，则代表查无此人
            if (stu == null)
            {
                Console.WriteLine("查无此人！请重新输入！");
            }
            else  //不为null，则进行删除
            {
                manager.Delete(stu);
                Console.WriteLine("删除成功！");
            }
        }
        //定义查询学员的方法
        void query()
        {
            Console.Write("请选择按什么查询？(1、学号；2、姓名；3、年龄；4、性别)：");
            int field = int.Parse(Console.ReadLine());
            Console.Write("请输入查询的条件：");
            string value = Console.ReadLine();
            //调用manager的Query方法完成查询
            manager.Query(field, value);

        }
        //定义显示学员信息列表的方法
        void stuList()
        {
            Console.WriteLine("学号\t姓名\t年龄\t性别");
            foreach (Student stu in manager.GetAllStus())
            {
                Console.WriteLine(stu);
            }
        }
    }
}
